package commande;

import static org.junit.Assert.assertTrue;
import librairies.liste.interfaces.IListeE;

import org.junit.Test;

import commande.outils.Processus;

public class ConsoleTest 
{
	@Test
	public void getInstanceTest() //ok
	{
		Console console0 = Console.getInstance();
		assertTrue(console0 != null);
		
		Console console1 = Console.getInstance();
		assertTrue(console1.equals(console0));
	}
	
	@Test
	public void rechercheFichierTest() //ok
	{
		Console console = Console.getInstance();

		IListeE<String> listeNull = console.rechercheFichier(null, null);
		assertTrue(listeNull == null);
		
		IListeE<String> listevide = console.rechercheFichier("", "");
		assertTrue(listevide == null);		
		
		IListeE<String> listeFichierExistant = console.rechercheFichier("/home/", "ecldzadipzdszde");
		assertTrue(listeFichierExistant.size() == 0);
		
		IListeE<String> listeRacineInexistant = console.rechercheFichier("/homemude/", "eclipse");
		assertTrue(listeRacineInexistant.size() == 0);
		
		IListeE<String> listeok = console.rechercheFichier("/home/", "eclipse");
		assertTrue(listeok.size() != 0);
	}
	
	@Test
	public void executionAppTest() //ok
	{
		Console console = Console.getInstance();
		
		Processus proNull = console.executionApp(null, null);
		assertTrue(proNull == null);

		Processus proFaux = console.executionApp("gediit", "de");
		assertTrue(proFaux == null);

		Processus proSansArgument = console.executionApp("gedit", null);
		assertTrue(proSansArgument != null);
		System.out.println(proSansArgument.getPid());
		
		Processus proAvecArgument = console.executionApp("gedit", "test");
		assertTrue(proAvecArgument != null);
		System.out.println(proAvecArgument.getPid());
	}
	
	@Test
	public void executionFichierTest() //ok
	{
		Console console = Console.getInstance();
		
		Processus proNull = console.executionFichier(null, null);
		assertTrue(proNull == null);

		Processus proFaux = console.executionFichier("/home/mathieu/Bureau/ttstts", null);
		assertTrue(proFaux != null);
		System.out.println(proFaux.getPid());

		Processus proSansArgument = console.executionFichier("/home/mathieu/Bureau/test", null);
		assertTrue(proSansArgument  != null);
		System.out.println(proSansArgument.getPid());
		
		Processus proAvecArgumentOdt = console.executionFichier("/home/mathieu/Bureau/test.odt", "");
		assertTrue(proAvecArgumentOdt != null);
		System.out.println(proAvecArgumentOdt.getPid());
		
		Processus proAvecArgumentTxt = console.executionFichier("/home/mathieu/Bureau/test.txt", "");
		assertTrue(proAvecArgumentTxt != null);
		System.out.println(proAvecArgumentTxt.getPid());
		
		Processus proAvecArgumentPdf = console.executionFichier("/home/mathieu/Bureau/test.pdf", "");
		assertTrue(proAvecArgumentPdf != null);
		System.out.println(proAvecArgumentPdf.getPid());
	}
	
	@Test
	public void executionShellTest() //ok
	{
		Console console = Console.getInstance();
		
		Processus proNull = console.executionShell(null, null);
		assertTrue(proNull == null);

		Processus proFaux = console.executionShell("asasas", null);
		assertTrue(proFaux == null);

		Processus proFaux2 = console.executionShell("./sasaa", null);
		assertTrue(proFaux2  == null);
		
		Processus proAvecArgument = console.executionShell("/home/mathieu/Bureau/test.sh", "");
		assertTrue(proAvecArgument != null);
		System.out.println(proAvecArgument.getPid());
		
		Processus proAvecArgument2 = console.executionShell("/home/mathieu/Bureau/test.batch", "");
		assertTrue(proAvecArgument2 != null);
		System.out.println(proAvecArgument2.getPid());
	}
}
